clearTimeout清除掉的定时器不等于Null

您所在的位置:网站首页 Angular 2 timer 不清理会有什么问题 clearTimeout清除掉的定时器不等于Null

clearTimeout清除掉的定时器不等于Null

2024-07-05 18:10| 来源: 网络整理| 查看: 265

 clearTimeout清除掉的定时器不等于null了

如果timer是一个定时器,直接将他log(打印)出来是一个数组编号,他被clearTimeout后再log也是会显示一个编号,typeof(timer)会显示他是"number",因此在立即执行防抖函数中,他可以被设置成开关

function debounce(func,wait) { let timeout; return function () { const context = this; const args = [...arguments]; if (timeout) clearTimeout(timeout); //若存在就清除定时器 const callNow = !timeout; //清除后的timeout为一个数字编号,所以可以当判断条件 timeout = setTimeout(() => { timeout = null; //时间到了将其设置为null,然后可以重新触发。 }, wait) if (callNow) func.apply(context, args) } }

第一次触发timeout不存在,为undefind,然后一路顺风。 第二次由于已经设置一个定时器,在定时器没结束的时间内触发时,即使clearTimeout(timeout),timeout不等于null。

将他剖析了解到第一次触发后timeout为7,第二次为12...每次加5,而这个5正好是我设置了五秒。又设置了一个实验

所以猜想定时器一开始是为2,每次增加的数值为设置的秒数。

可以肯定的是clearTimeout清除掉的定时器绝对不等于Null



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3